#//@reference Agile Web Development with Rails (4th Edition) (Whitney, Clare x11106131)

class ProductsController < ApplicationController
  before_filter :authenticate, :except => [:index, :show]
  # GET /products
  # GET /products.json
  def index
    @products = Product.search(params[:search_query])
    @cart = current_cart
    #end

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @products }
    end
  end

  # GET /products/1
  # GET /products/1.json
  def show
     @cart = current_cart
    @product = Product.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render :json => @product }
    end
  end

  # GET /products/new
  # GET /products/new.json
  def new
     @cart = current_cart
    @product = Product.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render :json => @product }
    end
  end


  # GET /products/1/edit
  def edit
     @cart = current_cart
    @product = Product.find(params[:id])
  end

  # POST /products
  # POST /products.json

  def create
     @cart = current_cart
    @product = current_user.new
        @products.new(params[:product])

    respond_to do |format|
      if @product.save
        format.html { redirect_to @product, :notice => 'Product was successfully created.' }
        format.json { render :json => @product, :status => :created, :location => @product }
      else
        format.html { render :action => "new" }
        format.json { render :json => @product.errors, :status => :unprocessable_entity }
      end
    end
	end

  # PUT /products/1
  # PUT /products/1.json
  def update
    @product = Product.find(params[:id])

    respond_to do |format|
      if @product.update_attributes(params[:product])
        format.html { redirect_to @product, :notice => 'Product was successfully updated.' }
        format.json { head :ok }
      else
        format.html { render :action => "edit" }
        format.json { render :json => @product.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /products/1
  # DELETE /products/1.json
  def destroy
    @product = Product.find(params[:id])
    @product.destroy

    respond_to do |format|
      format.html { redirect_to products_url}
      format.json { head :ok }
    end

  end
  end

